package CompteCourant;

import _Banque.CompteCourant;
import _Banque.Titulaire;
import _Tests.Tests;

//
// IUT de Nice / Departement informatique / Module APO-C++
// Annee 2008_2009 - Package _Banque
//
// Classe CompteCourant - Tests unitaires du mecanisme RTTI
//                        (Cas nominaux)
//
// Auteur : A. Thuaire
//
public class T_CompteCourant_N4 {
	
	public static void main(String args[]) throws Throwable
	{
	   Tests.Begin("_Banque.CompteCourant", "1.1.0");
	   String adresse = "Villa Beau Sejour, 115 Av. de la Grande Armee - PARIS (75000)";
	   Titulaire durand = new Titulaire("Durand", "Paul", "1981/01/03",  adresse);
	 
	      Tests.Design("Controle du mecanisme RTTI", 3);
				
	         Tests.Case("Cas natif sans transtypage"); {     
	         CompteCourant compte = new CompteCourant(durand);
	           
	            Tests.Unit("_Banque.CompteCourant", compte.getClass().getName());
	            Tests.Unit(8000001, compte.getNumeroCompte());
	         }
			 
	         Tests.Case("Cas avec transtypage dans la classe mere"); {     
	         CompteCourant compte = new CompteCourant(durand);
	           
	            Tests.Unit("_Banque.CompteCourant", compte.getClass().getName());
	            Tests.Unit(8000002, ((CompteCourant) compte).getNumeroCompte());
	         } 

	         Tests.Case("Cas avec transtypage dans un pointeur banalise"); {     
	         Object compte = new CompteCourant(durand);
	           
	            Tests.Unit("_Banque.CompteCourant", compte.getClass().getName());
	            Tests.Unit(8000003, ((CompteCourant) compte).getNumeroCompte());
	         } 

	         /*Tests.Case("Controle de validite d'un transtypage"); {     
	         CompteCourant cpt1= new CompteCourant(durand);
	         CompteBancaire cpt2= new CompteBancaire(durand);

	            Tests.Unit(true,  dynamic_cast<CompteBancaire*>(pCpt1)!=NULL);
	            Tests.Unit(false, dynamic_cast<CompteCourant*>(pCpt2)!=NULL);
	         } */
		  
	   Tests.End();
	}
}

